package zx.lrn.notes.basic_data_type;

import java.util.Arrays;

/**
 * @ClassName: ArrayLrn
 * @Description: 数组的copy、排序、查找
 * @Author: zhaoxuan
 * @Date: 2020/2/22 13:40
 **/
public class ArrayLrn {
    public static void main(String[] args) {
        int[] arr = {1,3,7,9,5,11};
        // 超长度copy，多余的位置的值是JAVA对数组元素的默认值
        int[] arr1 = Arrays.copyOf(arr, 10);
        printArr(arr1);
        // 小长度copy，直接截取
        int[] arr2 = Arrays.copyOf(arr, 3);
        printArr(arr2);
        // 范围copy，截取+超长可以并存
        int[] arr3 = Arrays.copyOfRange(arr, 1, 9);
        printArr(arr3);

        //排序(JAVA采用了优化的快速排序算法)，从小到大
        Arrays.sort(arr);
        printArr(arr);

        //以二分查找去查找元素的位置，找到了，返回下标
        System.out.println(Arrays.binarySearch(arr, 7));
        //找不到，返回数r，-r-1就是该元素插入数组后，不影响大小顺序的位置
        System.out.println(Arrays.binarySearch(arr,4));
    }

    private static void printArr(int[] arr){
        System.out.println(Arrays.toString(arr));
    }
}
